import { RequestBody } from 'alova';

import ApiClient from '@/api/apiClient';

/**
 * EnterpriseInfo对象，入驻企业信息表
 */
export interface EnterpriseInfo {
	/**
	 * 经营地址
	 */
	address?: string;
	/**
	 * 证件图片 多个使用,分割
	 */
	certificatePic?: string;
	/**
	 * 认证区域 多个使用,分开
	 */
	certificationArea?: string;
	/**
	 * 认证大类 多个使用,分开
	 */
	certificationCategory?: string;
	/**
	 * 认证项目 多个使用,分开
	 */
	certificationProject?: string;
	/**
	 * 认证标准 多个使用,分开
	 */
	certificationStandard?: string;
	/**
	 * 认证标准号 多个使用,分开
	 */
	certificationStandardCode?: string;
	/**
	 * 认证小类 多个使用,分开
	 */
	certificationSubclass?: string;
	/**
	 * 负责人
	 */
	chargePerson?: string;
	/**
	 * 负责人联系方式
	 */
	chargePersonPhone?: string;
	/**
	 * 机构代码
	 */
	code?: string;
	/**
	 * 机构联系人
	 */
	contactPerson?: string;
	/**
	 * 机构联系人邮箱
	 */
	contactPersonEmail?: string;
	/**
	 * 机构联系人电话
	 */
	contactPersonPhone?: string;
	/**
	 * 机构联系人职务
	 */
	contactPersonPosition?: string;
	/**
	 * 创建人
	 */
	createBy?: string;
	/**
	 * 创建人id
	 */
	createId?: number;
	/**
	 * 创建时间
	 */
	createTime?: Date;
	/**
	 * 成交数
	 */
	dealNum?: number;
	/**
	 * 荣誉成果
	 */
	honor?: string;
	/**
	 * 荣誉成果图片
	 */
	honorPic?: string;
	/**
	 * 主键
	 */
	id?: number;
	/**
	 * 是否逻辑删除，0否,其他是
	 */
	isDelete?: number;
	/**
	 * 是否启用 0否 1:是
	 */
	isEnable?: number;
	/**
	 * 机构名称
	 */
	name?: string;
	/**
	 * 宣传图片
	 */
	publicizePic?: string;
	/**
	 * 机构资质
	 */
	qualifications?: string;
	/**
	 * 机构资质图片
	 */
	qualificationsPic?: string;
	/**
	 * 备注信息
	 */
	remark?: string;
	/**
	 * 机构秘钥
	 */
	secretKey?: string;
	/**
	 * 服务流程
	 */
	serviceProcess?: string;
	/**
	 * 服务流程图片
	 */
	serviceProcessPic?: string;
	/**
	 * 服务范围
	 */
	serviceScope?: string;
	/**
	 * 服务范围图片
	 */
	serviceScopePic?: string;
	/**
	 * 状态:0待审核 1:通过 2:未通过
	 */
	status?: number;
	/**
	 * 租户编码
	 */
	tenantCode?: number;
	/**
	 * 机构类型 1:企业 2:学校 3:认证机构
	 */
	type?: number;
	/**
	 * 修改人
	 */
	updateBy?: string;
	/**
	 * 修改人id
	 */
	updateId?: number;
	/**
	 * 更新时间
	 */
	updateTime?: Date;
	/**
	 * 乐观锁版本号
	 */
	version?: number;
	[property: string]: any;
}
/**
 * CertificationClassification对象，认证分类
 */

/**
 * @description 文件上传
 */
export const commonUploadApi = (data: RequestBody) => {
	return ApiClient.Post('/file/upload', data, {
		meta: { auth: true }
	});
};

/**
 * @description 获取文本识别
 */
export const commonRecognizeApi = (data: RequestBody) => {
	return ApiClient.Post('/api/recognize', data, {
		meta: { auth: true }
	});
};

/** 分类查询的通用接口
 *  类型 1区域 2认证项目 3对象大类 4对象小类 5标准
 */

export const commonClassificationApi = (data: RequestBody) => {
	return ApiClient.Post<API.CertificationClassification[]>(
		'/certificationClassification/list',
		data,
		{
			meta: { auth: true }
		}
	);
};
/** 分类的编辑 */
export const commonClassificationSaveOrUpdateApi = (data: RequestBody) => {
	return ApiClient.Post('/certificationClassification/saveOrUpdate', data);
};

/** 分类的删除 */
export const commonClassificationDeleteApi = (data: Merged<RequestBody, { id: string }>) => {
	return ApiClient.Post(`certificationClassification/delete/${data.id}`, data);
};
export const commonClassificationTreeApi = (data: RequestBody) => {
	return ApiClient.Get<API.CertificationClassification[]>('certificationClassification/tree', {
		meta: { auth: true }
	});
};

/** 企业注册*/
export const commonRegisterCompanyApi = (data: RequestBody) => {
	return ApiClient.Post('/enterpriseInfo/save', data, { meta: { auth: true } });
};
/**  认证机构分页查询 */
export const commonCertificateEnterpriseApi = (data: RequestBody) => {
	return ApiClient.Post<ListApiParams<EnterpriseInfo>>(
		'/enterpriseInfo/certificateEnterprisePage',
		data,
		{
			meta: { auth: true }
		}
	);
};

/**  组织机构查询 */
export const commonCertificateAllEnterpriseApi = (data: RequestBody) => {
	return ApiClient.Post<API.ListType<EnterpriseInfo>>('/enterpriseInfo/page', data);
};

/**  组织机构更新 */
export const commonCertificateEnterpriseUpdateApi = (data: RequestBody) => {
	return ApiClient.Post('/enterpriseInfo/update', data);
};

/**  发送短信 */
export const commonSendMessageApi = (data: Merged<RequestBody, { phone: string }>) => {
	return ApiClient.Post(`/api/phone/sendCode?phone=${data.phone}`, data, {
		meta: { auth: true }
	});
};
/**  判断是否有管理员 */
export const commonCheckAdminApi = (data: Merged<RequestBody, { enterpriseInfoCode: string }>) => {
	return ApiClient.Get(`/user/checkEnterpriseAdmin`, {
		params: data,
		meta: { auth: true, messageShow: false }
	});
};
